<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1变量函数提升</title>
</head>
<body>
1. 变量声明提升
    * 通过var定义(声明)的变量，可在定义语句之前访问到
    * 值：undefined
2. 函数声明提升
    * 通过function声明的函数，可在之前进行调用
    * 值：函数定义(对象)

3. 变量函数声明提升是如何产生的？
<script type='text/javascript'>
    var a = 1;
    function fn() {
        console.log(a);//undefiend
        var a = 4;
    }
    fn()
    //以上代码是这样解析的：
    /*
    var a = 3;
    function fn () {
        var a;
        console.log(a);
        a = 4;
    }*/

    console.log(b);//undefined 变量提升
    fn2()//能调用 函数提升(通过function定义的)
    fn3();//错误 必须为function定义的函数
    var b = 3;
    function fn2() {
        console.log('鸟号');
    }
    var fn3 = function () {
        console.log('你好');
    }
</script>
</body>
</html>